package com.itlong.cloud.property.dao;

import com.itlong.cloud.POJO.VO.property.PropertyMonthCardRuleGetOneVO;
import com.itlong.cloud.POJO.VO.property.PropertyMonthCardRuleGetPageVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      智慧停车-月卡缴费规则管理持久层接口
 * </desc>
 *
 * @createDate 2018/11/07
 */
@Mapper
@Repository
public interface IPropertyMonthCardRuleDao {

    /**
     * <desc>
     *      添加月卡缴费规则
     * </desc>
     *
     * @param map 月卡缴费规则参数
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2018/11/07
     */
    Integer save(Map<String, Object> map);

    /**
     * <desc>
     *      修改月卡缴费规则
     * </desc>
     *
     * @param map 月卡缴费规则参数
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2018/11/07
     */
    Integer update(Map<String, Object> map);

    /**
     * <desc>
     *      查询该月卡正使用的车辆数
     * </desc>
     *
     * @param monthCardId 月卡id
     * @return 车辆数
     * @author wangzhi
     * @createDate 2018/11/07
     */
    Integer getCarCountByMonthCardId(@Param("monthCardId") String monthCardId);

    /**
     * <desc>
     *      查询单条月卡缴费规则
     * </desc>
     *
     * @param params 查询单条月卡缴费规则参数集
     * @return 标准格式化响应结果
     * @author wangzhi
     * @createDate 2018/11/07
     */
    PropertyMonthCardRuleGetOneVO getOneMonthCardRule(Map<String, Object> params);

    /**
     * <desc>
     *      分页查询月卡缴费规则
     * </desc>
     *
     * @param params 查询参数
     * @return 分页结果
     * @author wangzhi
     * @createDate 2018/11/08
     */
    List<PropertyMonthCardRuleGetPageVO> getMonthCardRulePage(Map<String, Object> params);

    /**
     * <desc>
     *      查询月卡缴费规则总记录数
     * </desc>
     *
     * @param params 查询参数
     * @return 记录数
     * @author wangzhi
     * @createDate 2018/11/08
     */
    Integer getMonthCardRuleRecordCount(Map<String, Object> params);
}
